import { dashboardApi } from '@/constants';
import {  get } from '../util/api';

// 系统统计数据类型定义
export interface SystemStats {
  // 用户统计信息
  userStats: {
    total: number;        // 总用户数
    adminCount: number;   // 管理员数量
    normalUserCount: number; // 普通用户数量
  };
  // 文章统计信息
  articleStats: {
    total: number;        // 总文章数
    approvedCount: number; // 已审核通过文章数
    pendingCount: number;  // 待审核文章数
  };
  // 评论总数
  commentCount: number;
  // 点赞总数
  likeCount: number;
  // 系统时间
  systemTime: string;
}

// 系统状态数据类型定义
export interface SystemStatus {
  // CPU使用率（%）
  cpuUsage: number;
  // 系统内存使用率（%）
  memoryUsage: number;
  // 服务器程序内存占用（MB）
  processMemoryMB: number;
  // 服务器程序运行时间
  uptime: string;
}

class CommonService {
  /**
   * 获取系统统计信息
   * 对接后端 /api/admin/common/stats 接口
   * 需要管理员权限
   */
  async getSystemStats(): Promise<any> {
    try {
      const response = await get(dashboardApi.DASHBOARD);//  /api/admin/common/dashboard`);
      return response;
    } catch (error) {
      console.error('获取系统统计信息失败:', error);
      // 如果是axios错误，提取错误信息
        throw new Error(
          error.response?.data?.message || 
          error.response?.data || 
          error.message || 
          '获取系统统计信息失败'
        );
    }
  }

  /**
   * 获取系统状态信息
   * 对接后端 /api/admin/common/system-status 接口
   * 需要管理员权限
   */
  async getSystemStatus(): Promise<any> {
    try {
      const response = await get(dashboardApi.SYSTEM_STATUS);//  /api/admin/common/system-status`);
      return response;
    } catch (error) {
      console.error('获取系统状态信息失败:', error);
      // 如果是axios错误，提取错误信息
      throw new Error(
        error.response?.data?.message || 
        error.response?.data || 
        error.message || 
        '获取系统状态信息失败'
      );
    }
  }
  
  /**
   * 获取最新日志
   */
  async getLatestLogs(): Promise<unknown> {
    try {
      const response = await get(dashboardApi.ACTIVITY_LOGS);//  /api/admin/common/latest-logs`);
      return response;
    } catch (error) {
      console.error('获取最新日志失败:', error);
      // 如果是axios错误，提取错误信息
      throw new Error(
        error.response?.data?.message || 
        error.response?.data || 
        error.message || 
        '获取最新日志失败'
      );
    }
  }

  /**
   * 获取热门文章排行
   */
  async getHotArticles(): Promise<any> {
    try {
      const response = await get(dashboardApi.HOT_ARTICLES);//  /api/admin/common/hot-articles`);
      return response;
    } catch (error) {
      console.error('获取热门文章排行失败:', error);
      // 如果是axios错误，提取错误信息
      throw new Error(
        error.response?.data?.message || 
        error.response?.data || 
        error.message || 
        '获取热门文章排行失败'
      );
    }
  }
}

// 导出单例
export const commonService = new CommonService();
